--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / public / meshchatx-docs / en / audio-calls.md
meshchatx/src/frontend/public/meshchatx-docs/en/audio-calls.md ec74a2651e897325b14269ae52d11b1e12f0b6e2 (ec74a265) Text, 3.61 KB
Audio calls (LXST)
MeshChatX uses LXST for voice telephony over Reticulum. Telephone functionality is optional and controlled per identity in settings.
Enable telephony
Turn on telephone in settings before using the Call page. MeshChatX announces your callable destination under aspect T383838lxst.telephony when announcing is enabled.
Peers who announce the same aspect appear as callable contacts.
Placing and receiving calls
From Call or a contact entry you can:
• Dial another identity by hash
• Answer or decline inbound rings
• Hang up an active session
• Mute transmit or receive paths
Call state changes arrive over the WebSocket (T383838telephone_ringing, T383838telephone_call_established, T383838telephone_call_ended, and related events).
Audio path
The frontend loads Codec2 assets for voice encoding (T383838Codec2Loader.js). Browser and Electron builds use a Web Audio bridge at T383838/ws/telephone/audio. Packaged desktop builds bundle the backend that negotiates LXST sessions.
Voicemail
When you miss a call, voicemail may be offered depending on settings:
• Record a custom greeting
• Upload or generate greeting audio
• Play back messages left for you
Voicemail events surface as T383838new_voicemail on the WebSocket.
Call history and recordings
The Call area keeps history of placed, received, and missed calls. You can record calls when the feature is enabled and policy allows storage on your device.
Unread missed calls show as a red count on the Calls sidebar icon and the header phone button. Opening the Call page clears that count. Desktop and Android still show a one-shot missed-call notification when the event happens.
Ringtones
Upload custom ringtones and assign them per contact. Default sounds are used when no override exists.
Do not disturb and contacts-only
Settings support:
• Do not disturb to silence inbound rings
• Contacts-only mode to reject calls from unknown hashes
Combine these with the Blocked list for finer control.
Telephone contacts
Import and export telephone contacts separately from LXMF conversation peers. Contacts drive caller display names and ringtone overrides.
Call setup flow
T282828
Caller UI: initiate call
|
v
GET /api/v1/telephone/call/{identity_hash}
|
v
LXST Telephone session over Reticulum
|
+--> Signalling and media via LXST
|
+--> /ws/telephone/audio (browser audio bridge)
|
v
Callee UI: ring, answer, or decline
Tips
• Verify Interfaces and paths before troubleshooting audio quality. Packet loss on the mesh affects voice.
• Use headphones on mobile and Quest builds to prevent echo.
• Review microphone permissions in Electron or the Android system settings if the UI shows no input level.
• Keep LXST and Reticulum versions aligned with MeshChatX release notes when upgrading.
• Docker / headless web: containers have no PulseAudio host devices. MeshChatX forces the web audio bridge (T383838MESHCHAT_FORCE_WEB_AUDIO=1) and installs hostless LXST backends so calls can use the browser mic/speaker. Enable telephone in settings, then place a call from the web UI over HTTPS.
• Android Codec2: native T383838libcodec2.so must be preloaded before T383838pycodec2. If Codec2 profiles are hidden, check T383838/api/v1/telephone/codec2/status and rebuild with vendor wheels that bundle T383838pycodec2/libcodec2.so.
See also
• LXMF messaging for text conversations with the same peers
• Identities, privacy, and security for HTTPS and local access controls
• LXST project documentation for codec and session details
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────